The advent of networked computer systems, hereinafter termed network systems, has made possible advances in the capabilities of information processing and software engineering. Network systems are widely used in business, industry and engineering as a valuable tool for retrieving, storing, and handling information.
As known by those familiar with network systems, a network system includes two or more network processing nodes (e.g., a computer system or a stand-alone storage device), each under the control of an independent operating system and joined together by a communication network. One of the main advantages of a network system is its ability to allow network processing nodes to share files. Access to shared files is coordinated by a set of protocols implemented in the operating system of each network processing node that is configured to share the file. A network processing node that provides access for other network processing nodes in the network system to a shared file is known as a file-server, hereinafter termed "server", and is said to "serve" the shared file. A server executes a "server process" that provides network and shared file access services. A network processing node that requires access to a shared file that is served by another network processing node is known as, and is termed herein, a "client".
Network systems may have more than one server if different network processing nodes in the network system independently provide access to different shared files. Accordingly, any network processing node in a network system may act concurrently as both a server and a client if it both serves a shared file and also requires access to a different shared file served by a different server.
As just described, clients rely on servers to access shared files. Accordingly, if a server fails for any reason, the shared files that the failed server serves will generally be inaccessible to its clients unless a method for providing the functionality of the failed server is in place. Network access services which provide the functionality of failed servers are known in the art as failover services. In present day network systems, failover services are created manually by system administrators and are based on explicit failover configuration information that is typically stored in configuration files on local storage of each server. The configuration information specifies the actions to be performed by a surviving server assigned to the same failover group, hereinafter termed "survivor", when another server belonging to the same failover group fails. The services provided by these failover services, such as file and print serving, are generally identical to services provided by the survivor for its normal service environment. However, the processes are instantiated differently for failover services than for the survivor's normal environment because the failed server's authorized clients and exported resources are different than those of the survivor. Consequently, for any given potential survivor, a special "failover" version of the survivor's server process software must be created for each other server belonging to the same failover group. Each of these special "failover" versions may be started up and executed concurrently with the survivor's normal server process by the survivor when the server it was created to perform failover services for fails. The present day approach to providing failover services in a redundant server environment requires a significant amount of memory space where duplicated code resides. In addition, it involves significant software complexity associated with creating special versions of server process software and in initiating new server processes on the survivor as specified by failover configuration files.
Accordingly, a need exists for an improved method for providing failover services for failed servers in a redundant server network system.